A virtual server environment may include a storage system (for storing client data on storage devices) and multiple clients accessing the storage system. The storage system may include multiple server pools, each server pool comprised of one or more physical servers. Each physical server may comprise hardware components for executing software applications within the storage system. The physical servers may access the storage devices for providing storage services to the clients.
In a virtual server environment, a physical server may include multiple virtual machines (VMs) that reside and execute on the physical server. Each VM (sometimes referred to as a virtual server or virtual desktop) may comprise a separate encapsulation or instance of a separate operating system and one or more applications that execute on the physical server. As such, each VM on a physical server may have its own operating system and set of applications, and function as a self-contained package on the physical server, whereby multiple operating systems may execute simultaneously on the same physical server. VMs can be rapidly and seamlessly shifted from one physical server to any other server, and optimally utilize the resources without affecting the applications.
Each VM on a physical server may be configured to share the hardware resources of the server. Hardware resources typically include power supplies and power management hardware, volatile memory, non-volatile memory, network interface facilities, processors and co-processors, environmental and enclosure management facilities, physical storage devices (e.g., hard drives, flash drives, external storage devices, etc) and RAID hardware. Each physical server may include a VM monitor module/engine (sometimes referred to as a hypervisor module/engine) that executes on the server to produce and manage the VMs. The VM monitor module/engine (hypervisor) may also virtualize the hardware and/or software resources of the servers for use by the VMs. The operating system of each VM may utilize and communicate with the resources of the physical server via the hypervisor.
The virtual server environment may also include a plurality of clients connected with each physical server for accessing the client data stored on the storage system. The client data may be stored on a set of storage devices of the storage system. Each client may connect and interface/interact with a particular VM of a physical server to access the client data of the storage system. From the viewpoint of a client, the VM may comprise a virtual server that appears and behaves as an actual physical server or desktop for accessing the storage devices. For example, a single physical server may be “virtualized” into 1, 2, 4, 8, or more virtual servers or virtual desktops, each executing their own operating system and one or more applications. A storage system may be configured to allow clients to access its data, for example, to read or write data to the storage system. A client may execute a client application that requests to “connect” to the storage system over a network. The client application may send an access request (e.g., a read request or write request) to the storage system for accessing particular data stored on the storage devices of the storage system.
A storage system may include multiple VMs. Each VM may be assigned to execute an operating system and one or more applications. For example, a VM may be assigned to execute a storage operating system and typically performs all the storage functions provided by the storage operating system. There are several advantages in implementing storage operating systems within VMs on a physical server. VMs executing the storage operating system may be rapidly cloned and deployed and easily transferred between physical servers in the virtual server environment as needed.
However, a VM executing a storage operating system may be susceptible to failure and only be as reliable as the storage operating system it executes. Also, since the VM typically performs all the storage functions provided by the storage operating system, if one of the storage functions fails, this may cause failure of all the other storage functions currently performed by the VM. Also, a VM executing a storage operating system may introduce a single point of failure in the storage system. As such, there is a need for an improved method of implementing VMs in a virtual server environment.